﻿from django import forms
from string import maketrans
import re
from yazasport.staticpages.models import StaticPage

conversion = {u'а' : 'a',u'б' : 'b',u'в' : 'v',u'г' : 'g',u'д' : 'd',u'е' : 'e',u'ё' : 'e',u'ж' : 'zh',u'з' : 'z',u'и' : 'i',u'й' : 'j',u'к' : 'k',u'л' : 'l',u'м' : 'm',u'н' : 'n',u'о' : 'o',u'п' : 'p',u'р' : 'r',u'с' : 's',u'т' : 't',u'у' : 'u',u'ф' : 'f',u'х' : 'h',u'ц' : 'c',u'ч' : 'ch',u'ш' : 'sh',u'щ' : 'sch',u'ь' : "'",u'ы' : 'y',u'ь' : "'",u'э' : 'e',u'ю' : 'ju',u'я' : 'ja',}

def cyr2lat(s):
    retval = ""
    for c in s:
        try:
            c = conversion[c]
        except KeyError:
            pass
        retval += c
    return retval

def transliterate(s):
    re_url = re.compile(r'\W')
    url = cyr2lat(s.lower())
    url = re_url.sub('-', url)
    return url

class StaticpageForm(forms.ModelForm):
    
    
    url = forms.RegexField(label=u"URL", required=False, max_length=100, regex=r'^[-\w/]+$', help_text=u"Например: '/about/'. Если страница является дочерней, то перед введенным путем автоматически будет добавлен путь родительской страницы. Не забудьте слэши в начале и в конце.", error_message=u"Поле должно содержать только буквы, цифры и слэши.")
    content = forms.CharField(label=u'Cодержимое', help_text=u'Текст новости.', widget=forms.Textarea(attrs={'class':'mceEditor'}))

    def clean(self):
        data = self.cleaned_data
        if data['url'] == '':
            data['url'] = u'/' + transliterate(data['title'])[0:98] + '/'
        if data['parent'] is not None:
            data['url'] = (data['parent'].url) + data['url'].split('/').pop(-2) + '/'
        return data

    class Meta:
        model = StaticPage
        
    class Media:
        js = ('/static/js/tiny_mce/tiny_mce.js', '/static/js/tiny_mce/textareas.js',)         
